package com.bp.project.service.impl;

import java.util.ArrayList;
import java.util.List;
                                                                            import javax.annotation.Resource;

import com.bp.project.EnumStageStatus;
import com.bp.project.domain.BizProject;
import org.springframework.stereotype.Service;
import com.bp.project.mapper.BizStageMapper;
import com.bp.project.domain.BizStage;
import com.bp.project.service.IBizStageService;

/**
 * 项目工程步骤Service业务层处理
 *
 * @author shaominjie
 * @date 2021-01-18
 */
@Service
public class BizStageServiceImpl implements IBizStageService {
    @Resource
    private BizStageMapper bizStageMapper;

    /**
     * 查询项目工程步骤
     *
     * @param stageId 项目工程步骤ID
     * @return 项目工程步骤
     */
    @Override
    public BizStage selectById(Long stageId) {
        return bizStageMapper.selectById(stageId);
    }

    /**
     * 查询项目工程步骤列表
     *
     * @param bizStage 项目工程步骤
     * @return 项目工程步骤
     */
    @Override
    public List<BizStage> selectList(BizStage bizStage) {
        return bizStageMapper.selectList(bizStage);
    }

    /**
     * 新增项目工程步骤
     *
     * @param bizStage 项目工程步骤
     * @return 结果
     */
    @Override
    public int insert(BizStage bizStage) {
                                                                                                                                        return bizStageMapper.insert(bizStage);
    }

    /**
     * 修改项目工程步骤
     *
     * @param bizStage 项目工程步骤
     * @return 结果
     */
    @Override
    public int update(BizStage bizStage) {
                                                                                                                                        return bizStageMapper.update(bizStage);
    }

    /**
     * 批量删除项目工程步骤
     *
     * @param stageIds 需要删除的项目工程步骤ID
     * @return 结果
     */
    @Override
    public int deleteByIds(Long[] stageIds) {
        return bizStageMapper.deleteByIds(stageIds);
    }

    /**
     * 删除项目工程步骤信息
     *
     * @param stageId 项目工程步骤ID
     * @return 结果
     */
    @Override
    public int deleteById(Long stageId) {
        return bizStageMapper.deleteById(stageId);
    }

    @Override
    public List<BizStage> selectByProjId(Long projId) {
        return bizStageMapper.selectByProjId(projId);
    }

    /**
     * 开始工程(立项->招标->设计->实施->审计->验收)
     *
     * @param bizProject
     * @return
     */
    @Override
    public int startProject(BizProject bizProject) {
        if(bizProject.getProjId() != null){
            List<BizStage> list = new ArrayList<>();
            BizStage step1 = new BizStage();
            step1.setProjId(bizProject.getProjId());
            step1.setStageName("立项");
            step1.setStageDesc("项目立项并上传立项凭证");
            step1.setStageStep(1);
            step1.setStageStatus(EnumStageStatus.PROCESS.getKey());
            list.add(step1);
            BizStage step2 = new BizStage();
            step2.setProjId(bizProject.getProjId());
            step2.setStageName("招标");
            step2.setStageDesc("项目完成招标并上传招标文件");
            step2.setStageStep(2);
            step2.setStageStatus(EnumStageStatus.WAIT.getKey());
            list.add(step2);
            BizStage step3 = new BizStage();
            step3.setProjId(bizProject.getProjId());
            step3.setStageName("设计");
            step3.setStageDesc("项目完成设计并上传设计材料");
            step3.setStageStep(3);
            step3.setStageStatus(EnumStageStatus.WAIT.getKey());
            list.add(step3);

            BizStage step4 = new BizStage();
            step4.setProjId(bizProject.getProjId());
            step4.setStageName("实施");
            step4.setStageDesc("项目进入实施并按需上传实施相关文件");
            step4.setStageStep(4);
            step4.setStageStatus(EnumStageStatus.WAIT.getKey());
            list.add(step4);
            BizStage step5 = new BizStage();
            step5.setProjId(bizProject.getProjId());
            step5.setStageName("审计");
            step5.setStageDesc("项目进入审计阶段并按需上传审计文件");
            step5.setStageStep(5);
            step5.setStageStatus(EnumStageStatus.WAIT.getKey());
            list.add(step5);
            BizStage step6 = new BizStage();
            step6.setProjId(bizProject.getProjId());
            step6.setStageName("验收");
            step6.setStageDesc("项目验收并上传验收文件");
            step6.setStageStep(6);
            step6.setStageStatus(EnumStageStatus.WAIT.getKey());
            list.add(step6);
            return bizStageMapper.batchInsert(list);
        }
        return 0;
    }
}
